// pages/statics/statics.js

// 引入插件安装器
import plugin from '../../component/v2/plugins/index'

// 设置代办
import todo from '../../component/v2/plugins/todo'
// 农历相关功能
import solarLunar from '../../component/v2/plugins/solarLunar/index'

plugin.use(solarLunar).use(todo)

const { envList } = require('../../envList')
Page({

    /**
     * 页面的初始数据
     */
    data: {
        // 此处为日历自定义配置字段
        calendarConfig: {
            markToday: '今',
            showLunar: true,
            emphasisWeek: true
         },
         userInfo: '',
         clock_days: 0,
         calendar_: '',
         dates:[], 
         score: 0,
         envId: '',
    },
    /**标记打卡天数*/ 
    markClockDay(nickname) {
        let user = wx.getStorageSync('user')
        if (user) {
            wx.cloud.callFunction({
                name: 'babyCloudFuncs',
                data: {
                    type: 'markClockDays',
                        data: {
                            nickName: nickname   
                    }
                }
            }).then((res) => {
                let times = res.result.data
                let dates = []
                let tmp = {}
                for (var i = 0; i < times.length; i++) {
                    tmp = {year:times[i].time.year, month:times[i].time.month, date: times[i].time.date}
                    dates.push(tmp)
                }
                this.setData({
                    dates: dates
                })
            })   
        }
        
    },

    /**
     * 开盲盒功能实现
     */
    async openBlindBox() {
        let user = wx.getStorageSync('user')
        if (user) {
            // 获取日历组件上的 calendar 对象
            const calendar = this.selectComponent('#calendar').calendar
            const time = calendar.getCurrentYM()
            var date = new Date()
            time['date'] = date.getDate()
            time['flag'] = true
            let timeId = String(time['year']) + String(time['month']) + String(time['date'])
            // 查询当日是否已开盲盒 根据timeid判断 若有则已开盲盒 否则 没开
            let res = await wx.cloud.callFunction({
                name: 'babyCloudFuncs',
                data: {
                    type: 'openBlindBox',
                    data: {
                        nickName: user.nickName,
                        timeId: timeId
                    }
                }}
            )
            if (res.result.data.length != 0) {
                wx.showModal({
                    title: '提示',
                    content: '每天只能开一次盲盒噢QAQ',
                    showCancel: false
                })
            } else {
                let score = Math.round(Math.random()*190+10)
                console.log(score)
                wx.showToast({
                    title: '获得'+ score +'积分',
                    icon: 'success',
                    duration: 1500,
                })
                // 更新用户信息
                await wx.cloud.callFunction({
                    name: 'babyCloudFuncs',
                    data: {
                        type: 'updateUserInfo',
                        data: {
                            nickName: user.nickName,
                            getIntegral: score,
                            useIntegral: 0,
                            clockDays: 0,
                        }
                    }
                })
                // 记录用户已开盲盒
                await wx.cloud.callFunction({
                    name: 'babyCloudFuncs',
                    data: {
                        type: 'completeBlindBox',
                        data: {
                            nickName: user.nickName,
                            timeId: timeId,
                            time: time,        
                        }
                    }
                })
                // 记录用户操作记录-开盲盒
                await wx.cloud.callFunction({
                    name: 'babyCloudFuncs',
                    data: {
                        type: 'operationRecord',
                        data: {
                            nickName: user.nickName,
                            taskName: '开盲盒',
                            taskType: 'complete task',
                            taskIntegral: score
                        }
                    }
                })
            }
        } else {
            wx.showModal({
                title: '提示',
                content: '请先登录，才能完成相关操作',
                showCancel: false
                })
        }
    },
    /**
     * 打卡
     */
    async clockDay() {
        let user = wx.getStorageSync('user')
        if (user) {
            // 获取日历组件上的 calendar 对象
            const calendar = this.selectComponent('#calendar').calendar
            const time = calendar.getCurrentYM()
            var date = new Date()
            time['date'] = date.getDate()
            time['flag'] = true
            let timeId = String(time['year']) + String(time['month']) + String(time['date'])
            // 查询当日是否已签到 根据timeid判断 若有则已签到 否则 没签到
            let res = await wx.cloud.callFunction({
                name: 'babyCloudFuncs',
                data: {
                    type: 'clockDay',
                    data: {
                        nickName: user.nickName,
                        timeId: timeId
                    }
                }}
            )
            if (res.result.data.length != 0) {
                wx.showModal({
                title: '提示',
                content: '你今日已签到，请勿重复签到',
                showCancel: false
                })
            } else {
                // 签到天数加一 积分加 20
                wx.showToast({
                    title: '签到成功+20分',
                    icon: 'success',
                    duration: 1500
                })
                // 更新用户信息
                await wx.cloud.callFunction({
                    name: 'babyCloudFuncs',
                    data: {
                        type: 'updateUserInfo',
                        data: {
                            nickName: user.nickName,
                            getIntegral: 20,
                            useIntegral: 0,
                            clockDays: 1,
                        }
                    }
                })
                // 记录用户已打卡
                await wx.cloud.callFunction({
                    name: 'babyCloudFuncs',
                    data: {
                        type: 'completeClockDay',
                        data: {
                            nickName: user.nickName,
                            timeId: timeId,
                            time: time,        
                        }
                    }
                })
                // 记录用户操作记录-打卡
                await wx.cloud.callFunction({
                    name: 'babyCloudFuncs',
                    data: {
                        type: 'operationRecord',
                        data: {
                            nickName: user.nickName,
                            taskName: '打卡',
                            taskType: 'complete task',
                            taskIntegral: 20
                        }
                    }
                })

            }
        } else {
            wx.showModal({
                title: '提示',
                content: '请先登录，才能完成相关操作',
                showCancel: false
              })
        }
    },
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {
        const calendar = this.selectComponent('#calendar').calendar
        this.setData({
            calendar_: calendar
        })
        var app = getApp()
        app.globalData.calendar = calendar;
        console.log(app.globalData.calendar)
        let user = wx.getStorageSync('user')
        if (user) {
            this.markClockDay(user.nickName)
            // 获取日历组件上的 calendar 对象
            // const calendar = this.selectComponent('#calendar').calendar
            calendar.setTodos({
                // 待办点标记设置
                pos: 'bottom', // 待办点标记位置 ['top', 'bottom']
                dotColor: 'red', // 待办点标记颜色
                circle: false, // 待办圆圈标记设置（如圆圈标记已签到日期），该设置与点标记设置互斥
                showLabelAlways: true, // 点击时是否显示待办事项（圆点/文字），在 circle 为 true 及当日历配置 showLunar 为 true 时，此配置失效
                dates: this.data.dates
            })
        }
        
    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {
        let user = wx.getStorageSync('user')
        if (user) {
            this.markClockDay(user.nickName)
            var app = getApp()
            if (app.globalData.calendar == null) {
                console.log('未获取到日历对象')
            } else {
                let calendar = app.globalData.calendar
                console.log(app.globalData.calendar)
                calendar.setTodos({
                    // 待办点标记设置
                    pos: 'bottom', // 待办点标记位置 ['top', 'bottom']
                    dotColor: 'red', // 待办点标记颜色
                    circle: false, // 待办圆圈标记设置（如圆圈标记已签到日期），该设置与点标记设置互斥
                    showLabelAlways: true, // 点击时是否显示待办事项（圆点/文字），在 circle 为 true 及当日历配置 showLunar 为 true 时，此配置失效
                    dates: this.data.dates
                })
            }
        } else {
            this.setData({
                dates: []
            })
        }    
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    }
})
